package demon1;

/**
 * Created with IntelliJ IDEA
 * Description:初识泛型
 * User:22954
 * Date:2024-01-18
 * Time:1:40
 */

/**
 * <T>: 只是一个占位符,表示当前类时一个泛型类
 * 泛型的意义:
 * 1.可以自动进行类型的转换
 * 2.可以自动进行类型的检查
 *
 * 泛型是编译时的一种机制----擦除机制,在运行时不存在泛型
 * 泛型在编译时被擦除成Object
 * @param <T>
 *
 * 泛型的细节:
 * 1.不能直接创建泛型数组 错例: new T[];
 * 2.简单类型不能作为泛型类型的参数 错例: MyArrayList<float> myArrayList;
 *   泛型类型的参数只能是引用
 * 3.泛型类型参数,不参与类型的组成 例子:"demon1.MyArrayList@2f4d3709"
 */
public class MyArrayList<T> {
    public T[] array;
    public int size;

    /**
     * 错误写法 this.array = new T[10];
     */
    public MyArrayList() {
        this.array = (T[]) new Object[10];
        this.size = 0;
    }
    public void add(T t){
        this.array[this.size]=t;
        this.size++;
    }
    public T pos(int pos){
        return this.array[pos];
    }
}
